﻿using System;
using System.Collections.Generic;
using System.Linq;
using Joel.Vishnu.Modelo.Entidades;
using Joel.Vishnu.Presentacion.Vistas;
using Joel.Vishnu.Presentacion;

namespace Joel.Vishnu.Consola
{
    public class Iva : Base, IIva
    {
        #region Constructores

        public Iva()
            : base()
        {
            presentador = new IvaPresentador(this);
            validador = String.Empty;
        }

        #endregion

        #region Atributos

        private IvaPresentador presentador;
        private String valor;
        private String validador;

        #endregion

        #region Propiedades

        public String Valor
        {
            get { return valor; }
            set { valor = value; }
        }

        #endregion

        #region Metodos

        public String Menu()
        {
            Console.Clear();
            Titulo("********** IVA **********");
            presentador.ActualizarPorcentaje();
            MensajeInformativo(String.Format("Valor actual: {0}%", valor));
            Console.WriteLine();
            MensajeInformativo("(1) Modificar");
            Console.WriteLine("");
            MensajeInformativo("(0) Menú configuraciones");
            Console.WriteLine("");
            MensajeInformativoSeguido("Presione el número de la opción deseada.");
            return Console.ReadKey().KeyChar.ToString();
        }

        public void Modificar()
        {
            try
            {
                Console.Clear();
                Titulo("********** Modificar IVA **********");
                MensajeInformativoSeguido("Porcentaje: ");
                validador = Console.ReadLine();
                if (validador == String.Empty)
                    throw new Exception("Debe ingresar un valor numérico.");
                valor = validador;

                if (valor != "=")
                {
                    presentador.Aceptar();
                }
                
                MensajeInformativoSeguido("Valor modificado.");
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                MensajeError(ex.Message);
            }
        }

        #endregion
    }
}
